
#ifndef  HELPER_WATCH_ISTOPWATCH_H
#define  HELPER_WATCH_ISTOPWATCH_H

#include <string>
#include "helper/scope/IScopable.h"

namespace helper {
namespace watch {

template<typename T>
struct IStopWatch : public helper::scope::IScopable<T> {
    ~IStopWatch() override{}
    virtual void reset() = 0;
    virtual std::string toString() const = 0;

    //virtual void enter(T & t) = 0;
    //virtual void exit(T & t) = 0;
};

template<>
struct IStopWatch<void> : public helper::scope::IScopable<void> {
    ~IStopWatch() override{}

    virtual void reset(void) = 0;
    virtual std::string toString() const = 0;

    //virtual void enter(void) = 0;
    //virtual void exit(void) = 0;
};  

}// end of namespace watch
}// end of namespace helper

#endif   /* HELPER_WATCH_ISTOPWATCH_H */
